package com.todo.biz.application.service;

import com.todo.biz.application.entity.bo.FeedbackBO;
import com.todo.biz.application.entity.bo.FeedbackDetailBO;
import com.todo.biz.application.entity.bo.FeedbackReplyBO;
import com.todo.biz.application.entity.condition.FeedbackConditionBO;
import com.todo.biz.common.enums.FeedbackStatusEnum;
import com.todo.common.common.entity.response.page.PageResult;

import java.util.List;

/**
 * (Feedback)表服务接口
 *
 * @author zhangwenxiang
 * @since 2024-03-04 00:19:46
 */
public interface FeedbackService {

    /**
     * 新增用户反馈
     *
     * @param feedbackBO
     * @return
     */
    Boolean insertFeedback(FeedbackBO feedbackBO);

    /**
     * 更新反馈信息
     *
     * @param feedbackBO
     * @return
     */
    Boolean updateFeedback(FeedbackBO feedbackBO);

    /**
     * 回复反馈
     *
     * @param feedbackReplyBO
     * @return
     */
    Boolean replyFeedback(FeedbackReplyBO feedbackReplyBO);

    /**
     * 根据主键删除反馈信息
     *
     * @param id
     * @return
     */
    Boolean removeFeedbackById(Long id);

    /**
     * 更新反馈状态
     *
     * @param id
     * @param oldStatus
     * @param newStatus
     * @return
     */
    Boolean updateStatusById(Long id, FeedbackStatusEnum oldStatus, FeedbackStatusEnum newStatus);

    /**
     * 根据主键查询反馈信息
     *
     * @param id
     * @return
     */
    FeedbackDetailBO queryFeedbackById(Long id);

    /**
     * 多条件查询反馈信息列表
     *
     * @param feedbackConditionBO
     * @return
     */
    PageResult<FeedbackBO> queryFeedbackByCondition(FeedbackConditionBO feedbackConditionBO);

    /**
     * 根据主键列表删除反馈信息
     *
     * @param idList
     * @return
     */
    Boolean removeFeedbackByIdList(List<Long> idList);
}
